/*	Nama file		: Event.h
	Deskripsi		: Deklarasi type dan prototype primitf type Event
	Nama pembuat	: Ni Made Satvika Iswari/23512077
	Hari / Tanggal	: Selasa, 25 September 2012
*/

#ifndef Event_H
#define Event_H
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include "..\Datetime\DateTime.h"
#include "..\List\ListOfString.h"
#include "..\Point\point.h"

typedef struct tEvent{
	int Event_No;						//Nomor ID Event
	char* Event_Name;					//Nama Event
	Point Place;						//Tempat Event
	DateTime DateTime;					//Tanggal dan Waktu Event
	ListStr NameList;					//Daftar nama yang terlibat
}Event;

/** Getter dan Setter **/
int GetEventNo(Event E);
/* Mengembalikan Nomor ID Event E*/
char* GetEventName(Event E);
/* Mengembalikan Nama Event E */
Point GetPlace(Event E);
/* Mengembalikan Tempat Event E */
DateTime GetDateTime(Event E);
/* Mengembalikan DateTime Event E */
ListStr GetNameList(Event E);
/* Mengembalikan daftar nama yang terlibat dalam Event E */

void SetEventNo(Event *E, int newNo);
/* Proses : Mengubah Nomor ID Event E */
/* I.S : E sudah terbuat, newNo terdefinisi */
/* F.S : Nomor Event E berisi newNo */
void SetEventName(Event *E, char* newName);
/* Proses : Mengubah Nama Event E */
/* I.S : E sudah terbuat, newName terdefinisi */
/* F.S : Nama Event E berisi newName */
void SetPlace(Event *E, Point newPlace);
/* Proses : Mengubah Tempat Event E */
/* I.S : E sudah terbuat, newPlace terdefinisi */
/* F.S : Tempat Event E berisi newPlace */
void SetDateTime(Event *E, DateTime newDateTime);
/* Proses : Mengubah DateTime Event E */
/* I.S : E sudah terbuat, newDateTime terdefinisi */
/* F.S : DateTime Event E berisi newDateTime */
void SetNameList(Event *E, ListStr newNameList);
/* Proses : Mengubah daftar nama yang terlibat dalam Event E */
/* I.S : E sudah terbuat, newNameList terdefinisi */
/* F.S : NameList Event E berisi newNameList */

void dealokasiList(Event *E);
/* Proses : menghapus/mendealokasi semua isi list nama partisipan */
/* I.S : E sudah terbuat */
/* F.S : daftar nama partisipan dalam Event E kosong atau menjadi NULL */

/** Pembuatan Event Baru **/
Event MakeEvent (int eventNo, char* eventName, Point place, DateTime dateTime, ListStr nameList);
/* Proses : Membuat Event dari elemen - elemen yang terdefinisi */
/* I.S : Masing-masing elemen Event terdefinisi */
/* F.S : Event terbentuk dari elemen - elemen yang terdefinisi */

/** Operator Baca/Tulis **/
void BacaEvent (Event *E);
/* Proses : Membaca komponen Event dari masukan pengguna */
/* I.S. Sembarang */
/* F.S. E terdefinisi dan merupakan Event yang valid */

void TulisEvent(Event E);
/* Proses : Menulis nilai setiap komponen E ke layar */
/* I.S. E terdefinisi */
/* F.S. Nilai E ditulis ke layar beserta komponen-komponennya */

void UpdateEvent (Event *E);
/* Proses : Mengubah nilai E yang sudah terdefinisi */
/* I.S : E terdefinisi *?
/* F.S : Nilai masing-masing elemen E diisi dengan nilai baru */
#endif
